home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / mac / DirectX SDK / DXSDK / include / DShowIDL / bdaiface.idl < prev    next >
Text File  |  2001-10-08  |  45KB  |  1,744 lines

  1. //------------------------------------------------------------------------------
  2. // File: BDAIface.idl
  3. //
  4. // Desc: This file defines the Ring 3 BDA interfaces that are common to
  5. //       all BDA network and device types.
  6. //
  7. //       The interfaces specific to a particular Network Type or filter
  8. //       implementation are defined in a separate include file for that
  9. //       Network Type or filter implementation.
  10. //
  11. // Copyright (c) 1999-2001, Microsoft Corporation.  All rights reserved.
  12. //------------------------------------------------------------------------------
  13.  
  14.  
  15. //---------------------------------------------------------------------
  16. // IUnknown import idl
  17. //---------------------------------------------------------------------
  18. #ifndef DO_NO_IMPORTS
  19. import "unknwn.idl";
  20. import "strmif.idl";
  21. import "BdaTypes.h";
  22. #endif
  23.  
  24.  
  25. /////////////////////////////////////////////////////////////////////////////
  26. //
  27. //  Windows XP vs. DirectX 8.0 header merge
  28. //
  29. //  Separate the updated Windows XP version of this header from the downlevel
  30. //  version that shipped with the DirectX 8.0 SDK.  Since development 
  31. //  on BDA technology continued for Windows XP, some changes were made to
  32. //  this file in order to improve the interface and functionality.
  33. //
  34. //  To maintain compatibility with older applications which rely on the
  35. //  DirectX 8.0 versions of these files, the DirectX 8.1 version includes
  36. //  both the Windows XP content and the DirectX 8.0 content, which are 
  37. //  separated by the #if (WINVER >= 0x501) preprocessor directive.
  38. //
  39. //  Therefore, if you define WINVER to be 0x501 to specify Windows XP,
  40. //  the revised content will be compiled.  Otherwise, the original 
  41. //  DirectX 8.0 content will be used.
  42. //
  43. /////////////////////////////////////////////////////////////////////////////
  44.  
  45. #if (WINVER >= 0x501)    // Windows XP content
  46.  
  47.  
  48.  
  49. //---------------------------------------------------------------------
  50. //
  51. //  IBDA_NetworkProvider interface
  52. //
  53. //  Implemented by a BDA Network Provider
  54. //
  55. //      Used by a BDA device filter to register itself with
  56. //      a Network Provider and query information about the
  57. //      the current tuning request.
  58. //
  59. //---------------------------------------------------------------------
  60. [
  61.     object,
  62.     uuid(fd501041-8ebe-11ce-8183-00aa00577da2),
  63.     pointer_default(unique)
  64. ]
  65.  
  66. interface IBDA_NetworkProvider : IUnknown
  67. {
  68.  
  69.     HRESULT
  70.     PutSignalSource (
  71.         [in] ULONG          ulSignalSource
  72.         );
  73.  
  74.  
  75.     HRESULT
  76.     GetSignalSource (
  77.         [in, out] ULONG *   pulSignalSource
  78.         );
  79.  
  80.     HRESULT
  81.     GetNetworkType (
  82.         [in, out] GUID *    pguidNetworkType
  83.         );
  84.  
  85.     HRESULT
  86.     PutTuningSpace (
  87.         [in] REFGUID        guidTuningSpace
  88.         );
  89.  
  90.     HRESULT
  91.     GetTuningSpace (
  92.         [in, out] GUID *    pguidTuingSpace
  93.         );
  94.  
  95.     HRESULT
  96.     RegisterDeviceFilter (
  97.         [in]  IUnknown *    pUnkFilterControl,
  98.         [in, out] ULONG *   ppvRegisitrationContext
  99.         );
  100.  
  101.     HRESULT
  102.     UnRegisterDeviceFilter (
  103.         [in] ULONG          pvRegistrationContext
  104.         );
  105.  
  106. }
  107.  
  108.  
  109. //---------------------------------------------------------------------
  110. //
  111. //  IBDA_EthernetFilter interface
  112. //
  113. //  Implemented by a BDA Network Provider
  114. //
  115. //      Used by an Ethernet Network Data Sink filter (eg. IPSink) to
  116. //      request that the Network Provider make its best effort to tune
  117. //      to the stream(s) on which a list of Ethernet multicast addresses
  118. //      may be transmitted.
  119. //
  120. //      Addresses in the address list are byte aligned in Network order.
  121. //      UlcbAddresses will always be an integer multiple of the
  122. //      size of an ethernet address.
  123. //
  124. //---------------------------------------------------------------------
  125. [
  126.     object,
  127.     uuid(71985F43-1CA1-11d3-9CC8-00C04F7971E0),
  128.     pointer_default(unique)
  129. ]
  130.  
  131. interface IBDA_EthernetFilter : IUnknown
  132. {
  133.     HRESULT
  134.     GetMulticastListSize (
  135.         [in, out] ULONG *                   pulcbAddresses
  136.         );
  137.  
  138.     HRESULT
  139.     PutMulticastList (
  140.         [in] ULONG                          ulcbAddresses,
  141.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  142.         );
  143.  
  144.     HRESULT
  145.     GetMulticastList (
  146.         [in, out] ULONG *                       pulcbAddresses,
  147.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  148.         );
  149.  
  150.     HRESULT
  151.     PutMulticastMode (
  152.         [in] ULONG      ulModeMask
  153.         );
  154.  
  155.     HRESULT
  156.     GetMulticastMode (
  157.         [out] ULONG *   pulModeMask
  158.         );
  159.  
  160. }
  161.  
  162.  
  163.  
  164. //---------------------------------------------------------------------
  165. //
  166. //  IBDA_IPV4Filter interface
  167. //
  168. //  Implemented by a BDA Network Provider
  169. //
  170. //      Used by an IPv4 Network Data Sink filter to request
  171. //      that the Network Provider make its best effort to tune
  172. //      to the stream(s) on which a list of IPv4 multicast addresses
  173. //      may be transmitted.
  174. //
  175. //      Addresses in the address list are byte aligned in Network order.
  176. //      UlcbAddresses will always be an integer multiple of the
  177. //      size of an IPv4 address.
  178. //
  179. //---------------------------------------------------------------------
  180. [
  181.     object,
  182.     uuid(71985F44-1CA1-11d3-9CC8-00C04F7971E0),
  183.     pointer_default(unique)
  184. ]
  185.  
  186. interface IBDA_IPV4Filter : IUnknown
  187. {
  188.  
  189.     HRESULT
  190.     GetMulticastListSize (
  191.         [in, out] ULONG *                   pulcbAddresses
  192.         );
  193.  
  194.     HRESULT
  195.     PutMulticastList (
  196.         [in] ULONG                          ulcbAddresses,
  197.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  198.         );
  199.  
  200.     HRESULT
  201.     GetMulticastList (
  202.         [in, out] ULONG *                       pulcbAddresses,
  203.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  204.         );
  205.  
  206.     HRESULT
  207.     PutMulticastMode (
  208.         [in] ULONG  ulModeMask
  209.         );
  210.  
  211.     HRESULT
  212.     GetMulticastMode (
  213.         [out] ULONG* pulModeMask
  214.         );
  215. }
  216.  
  217.  
  218.  
  219. //---------------------------------------------------------------------
  220. //
  221. //  IBDA_IPV6Filter interface
  222. //
  223. //  Implemented by a BDA Network Provider
  224. //
  225. //      Used by an IPv6 Network Data Sink filter to request
  226. //      that the Network Provider make its best effort to tune
  227. //      to the stream(s) on which a list of IPv6 multicast addresses
  228. //      may be transmitted.
  229. //
  230. //      Addresses in the address list are byte aligned in Network order.
  231. //      UlcbAddresses will always be an integer multiple of the
  232. //      size of an IPv6 address.
  233. //
  234. //---------------------------------------------------------------------
  235. [
  236.     object,
  237.     uuid(E1785A74-2A23-4fb3-9245-A8F88017EF33),
  238.     pointer_default(unique)
  239. ]
  240.  
  241. interface IBDA_IPV6Filter : IUnknown
  242. {
  243.  
  244.     HRESULT
  245.     GetMulticastListSize (
  246.         [in, out] ULONG *                   pulcbAddresses
  247.         );
  248.  
  249.     HRESULT
  250.     PutMulticastList (
  251.         [in] ULONG                          ulcbAddresses,
  252.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  253.         );
  254.  
  255.     HRESULT
  256.     GetMulticastList (
  257.         [in, out] ULONG *                       pulcbAddresses,
  258.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  259.         );
  260.  
  261.     HRESULT
  262.     PutMulticastMode (
  263.         [in] ULONG  ulModeMask
  264.         );
  265.  
  266.     HRESULT
  267.     GetMulticastMode (
  268.         [out] ULONG* pulModeMask
  269.         );
  270. }
  271.  
  272.  
  273.  
  274. //---------------------------------------------------------------------
  275. //
  276. //  IBDA_DeviceControl interface
  277. //
  278. //  Implemented by a BDA Device Filter
  279. //
  280. //      Used by the Network Provider to commit a series of changes
  281. //      on a BDA device filter.  The device filter validates and
  282. //      accumulates all changes requested after StartChanges().  It
  283. //      effects the accumulated list of changes when CommitChanges() is
  284. //      called.
  285. //
  286. //---------------------------------------------------------------------
  287. [
  288.     object,
  289.     uuid(FD0A5AF3-B41D-11d2-9C95-00C04F7971E0),
  290.     pointer_default(unique)
  291. ]
  292.  
  293. interface IBDA_DeviceControl : IUnknown
  294. {
  295.     HRESULT
  296.     StartChanges (
  297.         void
  298.         );
  299.  
  300.     HRESULT
  301.     CheckChanges (
  302.         void
  303.         );
  304.  
  305.     HRESULT
  306.     CommitChanges (
  307.         void
  308.         );
  309.  
  310.     HRESULT
  311.     GetChangeState (
  312.         [in, out] ULONG *   pState
  313.         );
  314.  
  315. }
  316.  
  317.  
  318.  
  319. //---------------------------------------------------------------------
  320. //
  321. //  IBDA_PinControl interface
  322. //
  323. //  Implemented by a BDA Device Filter's Pin
  324. //
  325. //      Used by the Network Provider to determine the BDA PinID and
  326. //      PinType on a BDA Filter's Pin
  327. //
  328. //---------------------------------------------------------------------
  329. [
  330.     object,
  331.     uuid(0DED49D5-A8B7-4d5d-97A1-12B0C195874D),
  332.     pointer_default(unique)
  333. ]
  334.  
  335. interface IBDA_PinControl : IUnknown
  336. {
  337.     HRESULT
  338.     GetPinID (
  339.         [in, out] ULONG *   pulPinID
  340.         );
  341.  
  342.     HRESULT
  343.     GetPinType (
  344.         [in, out] ULONG *   pulPinType
  345.         );
  346.  
  347.     HRESULT
  348.     RegistrationContext (
  349.         [in, out] ULONG *   pulRegistrationCtx
  350.         );
  351. }
  352.  
  353.  
  354.  
  355. //---------------------------------------------------------------------
  356. //
  357. //  IBDA_SignalProperties interface
  358. //
  359. //  Implemented by a BDA Device Filter
  360. //
  361. //      BDA Signal Properties is used by a Network Provider to inform
  362. //      a BDA Device Filter about the current tuning request.  The
  363. //      Network Provider will call the Put functions when the BDA
  364. //      device is first registered with the Network Provider and whenever
  365. //      the current tuning request is modified.
  366. //
  367. //---------------------------------------------------------------------
  368. [
  369.     object,
  370.     uuid(D2F1644B-B409-11d2-BC69-00A0C9EE9E16),
  371.     pointer_default(unique)
  372. ]
  373.  
  374. interface IBDA_SignalProperties : IUnknown
  375. {
  376.     HRESULT
  377.     PutNetworkType (
  378.         [in] REFGUID        guidNetworkType
  379.         );
  380.  
  381.     HRESULT
  382.     GetNetworkType (
  383.         [in, out] GUID *    pguidNetworkType
  384.         );
  385.  
  386.     HRESULT
  387.     PutSignalSource (
  388.         [in] ULONG          ulSignalSource
  389.         );
  390.  
  391.     HRESULT
  392.     GetSignalSource (
  393.         [in, out] ULONG *   pulSignalSource
  394.         );
  395.  
  396.     HRESULT
  397.     PutTuningSpace (
  398.         [in] REFGUID        guidTuningSpace
  399.         );
  400.  
  401.     HRESULT
  402.     GetTuningSpace (
  403.         [in, out] GUID *    pguidTuingSpace
  404.         );
  405. }
  406.  
  407.  
  408. //---------------------------------------------------------------------
  409. //
  410. //  IBDA_SignalStatistics interface
  411. //
  412. //  Implemented by a BDA Control Node
  413. //
  414. //      A BDA Control Node may return these properties to describe
  415. //      the condition of a signal that is being received.
  416. //      
  417. //      
  418. //      
  419. //
  420. //---------------------------------------------------------------------
  421. [
  422.     object,
  423.     uuid(1347D106-CF3A-428a-A5CB-AC0D9A2A4338),
  424.     pointer_default(unique)
  425. ]
  426.  
  427. interface IBDA_SignalStatistics : IUnknown
  428. {
  429.     HRESULT
  430.     put_SignalStrength (
  431.         [in] LONG           lDbStrength
  432.         );
  433.     
  434.     HRESULT
  435.     get_SignalStrength (
  436.         [in, out] LONG *    plDbStrength
  437.         );
  438.     
  439.     HRESULT
  440.     put_SignalQuality (
  441.         [in] LONG           lPercentQuality
  442.         );
  443.     
  444.     HRESULT
  445.     get_SignalQuality (
  446.         [in, out] LONG *    plPercentQuality
  447.         );
  448.     
  449.     HRESULT
  450.     put_SignalPresent (
  451.         [in] BOOLEAN        fPresent
  452.         );
  453.     
  454.     HRESULT
  455.     get_SignalPresent (
  456.         [in, out] BOOLEAN * pfPresent
  457.         );
  458.     
  459.     HRESULT
  460.     put_SignalLocked (
  461.         [in] BOOLEAN        fLocked
  462.         );
  463.     
  464.     HRESULT
  465.     get_SignalLocked (
  466.         [in, out] BOOLEAN * pfLocked
  467.         );
  468.     
  469.     HRESULT
  470.     put_SampleTime (
  471.         [in] LONG           lmsSampleTime
  472.         );
  473.     
  474.     HRESULT
  475.     get_SampleTime (
  476.         [in, out] LONG *    plmsSampleTime
  477.         );
  478. }
  479.  
  480.  
  481. //---------------------------------------------------------------------
  482. //
  483. //  IBDA_Topology interface
  484. //
  485. //  Implemented by a BDA Device Filter
  486. //
  487. //      Used by the Network Provider to query a BDA Device Filter's
  488. //      possible topologies (template topology) and to configure
  489. //      the device with an appropriate topology for the current
  490. //      tuning request.  It is also used to get an IUnknown to
  491. //      a control node which may be used to set specific tuning
  492. //      information.
  493. //
  494. //---------------------------------------------------------------------
  495. [
  496.     object,
  497.     uuid(79B56888-7FEA-4690-B45D-38FD3C7849BE),
  498.     pointer_default(unique)
  499. ]
  500.  
  501. interface IBDA_Topology : IUnknown
  502. {
  503.     HRESULT
  504.     GetNodeTypes (
  505.         [in, out] ULONG *                           pulcNodeTypes,
  506.         [in]  ULONG                                 ulcNodeTypesMax,
  507.         [in, out, size_is (ulcNodeTypesMax)] ULONG  rgulNodeTypes[]
  508.         );
  509.         
  510.     HRESULT
  511.     GetNodeDescriptors (
  512.         [in, out] ULONG *   ulcNodeDescriptors,
  513.         [in]  ULONG         ulcNodeDescriptorsMax,
  514.         [in, out, size_is (ulcNodeDescriptorsMax)] BDANODE_DESCRIPTOR   rgNodeDescriptors[]
  515.         );
  516.  
  517.     HRESULT
  518.     GetNodeInterfaces (
  519.         [in]  ULONG                                 ulNodeType,
  520.         [in, out] ULONG *                           pulcInterfaces,
  521.         [in]  ULONG                                 ulcInterfacesMax,
  522.         [in, out, size_is (ulcInterfacesMax)] GUID  rgguidInterfaces[]
  523.         );
  524.  
  525.     HRESULT
  526.     GetPinTypes (
  527.         [in, out] ULONG *                           pulcPinTypes,
  528.         [in]  ULONG                                 ulcPinTypesMax,
  529.         [in, out, size_is (ulcPinTypesMax)] ULONG   rgulPinTypes[]
  530.         );
  531.  
  532.     HRESULT
  533.     GetTemplateConnections (
  534.         [in, out] ULONG *                       pulcConnections,
  535.         [in]  ULONG                             ulcConnectionsMax,
  536.         [in, out, size_is (ulcConnectionsMax)] BDA_TEMPLATE_CONNECTION    rgConnections[]
  537.         );
  538.  
  539.     HRESULT
  540.     CreatePin (
  541.         [in]  ULONG         ulPinType,
  542.         [in, out] ULONG *   pulPinId
  543.         );
  544.  
  545.     HRESULT
  546.     DeletePin (
  547.         [in] ULONG          ulPinId
  548.         );
  549.  
  550.     HRESULT
  551.     SetMediaType (
  552.         [in]  ULONG             ulPinId,
  553.         [in]  AM_MEDIA_TYPE *   pMediaType
  554.         );
  555.  
  556.     HRESULT
  557.     SetMedium (
  558.         [in] ULONG          ulPinId,
  559.         [in] REGPINMEDIUM * pMedium
  560.         );
  561.  
  562.     HRESULT
  563.     CreateTopology (
  564.         [in] ULONG ulInputPinId,
  565.         [in] ULONG ulOutputPinId
  566.         );
  567.  
  568.     HRESULT
  569.     GetControlNode (
  570.         [in] ULONG              ulInputPinId,
  571.         [in] ULONG              ulOutputPinId,
  572.         [in] ULONG              ulNodeType,
  573.         [in, out] IUnknown **   ppControlNode
  574.         );
  575. }
  576.  
  577. //---------------------------------------------------------------------
  578. // IBDA_VoidTransform interface
  579. //---------------------------------------------------------------------
  580. [
  581.     object,
  582.     uuid(71985F46-1CA1-11d3-9CC8-00C04F7971E0),
  583.     pointer_default(unique)
  584. ]
  585.  
  586. interface IBDA_VoidTransform : IUnknown
  587. {
  588.     HRESULT
  589.     Start (
  590.         void
  591.         );
  592.  
  593.     HRESULT
  594.     Stop (
  595.         void
  596.         );
  597.  
  598. }
  599.  
  600. //---------------------------------------------------------------------
  601. // IBDA_NullTransform interface
  602. //---------------------------------------------------------------------
  603. [
  604.     object,
  605.     uuid(DDF15B0D-BD25-11d2-9CA0-00C04F7971E0),
  606.     pointer_default(unique)
  607. ]
  608.  
  609. interface IBDA_NullTransform : IUnknown
  610. {
  611.     HRESULT
  612.     Start (
  613.         void
  614.         );
  615.  
  616.     HRESULT
  617.     Stop (
  618.         void
  619.         );
  620.  
  621. }
  622.  
  623.  
  624. //---------------------------------------------------------------------
  625. // IBDA_FrequencyFilter interface
  626. //---------------------------------------------------------------------
  627. [
  628.     object,
  629.     uuid(71985F47-1CA1-11d3-9CC8-00C04F7971E0),
  630.     pointer_default(unique)
  631. ]
  632.  
  633. interface IBDA_FrequencyFilter : IUnknown
  634. {
  635.     HRESULT
  636.     put_Autotune (
  637.         [in] ULONG                  ulTransponder
  638.         );
  639.     
  640.     HRESULT
  641.     get_Autotune (
  642.         [in, out] ULONG *           pulTransponder
  643.         );
  644.  
  645.     HRESULT
  646.     put_Frequency (
  647.         [in] ULONG                  ulFrequency
  648.         );
  649.  
  650.     HRESULT
  651.     get_Frequency (
  652.         [in, out] ULONG *           pulFrequency
  653.         );
  654.  
  655.     HRESULT
  656.     put_Polarity (
  657.         [in] Polarisation           Polarity
  658.         );
  659.  
  660.     HRESULT
  661.     get_Polarity (
  662.         [in, out] Polarisation *    pPolarity
  663.         );
  664.  
  665.     HRESULT
  666.     put_Range (
  667.         [in] ULONG                  ulRange
  668.         );
  669.  
  670.     HRESULT
  671.     get_Range (
  672.         [in, out] ULONG *           pulRange
  673.         );
  674.  
  675.     HRESULT
  676.     put_Bandwidth (
  677.         [in] ULONG                  ulBandwidth
  678.         );
  679.  
  680.     HRESULT
  681.     get_Bandwidth (
  682.         [in, out] ULONG *           pulBandwidth
  683.         );
  684.  
  685.     HRESULT
  686.     put_FrequencyMultiplier (
  687.         [in] ULONG                  ulMultiplier
  688.         );
  689.  
  690.     HRESULT
  691.     get_FrequencyMultiplier (
  692.         [in, out] ULONG *           pulMultiplier
  693.         );
  694. }
  695.  
  696.  
  697. //---------------------------------------------------------------------
  698. // IBDA_LNBInfo interface
  699. //---------------------------------------------------------------------
  700. [
  701.     object,
  702.     uuid(992CF102-49F9-4719-A664-C4F23E2408F4),
  703.     pointer_default(unique)
  704. ]
  705.  
  706. interface IBDA_LNBInfo : IUnknown
  707. {
  708.     HRESULT
  709.     put_LocalOscilatorFrequencyLowBand (
  710.         [in] ULONG          ulLOFLow
  711.         );
  712.  
  713.     HRESULT
  714.     get_LocalOscilatorFrequencyLowBand (
  715.         [in, out] ULONG *   pulLOFLow
  716.         );
  717.  
  718.     HRESULT
  719.     put_LocalOscilatorFrequencyHighBand (
  720.         [in] ULONG          ulLOFHigh
  721.         );
  722.  
  723.     HRESULT
  724.     get_LocalOscilatorFrequencyHighBand (
  725.         [in, out] ULONG *   pulLOFHigh
  726.         );
  727.  
  728.     HRESULT
  729.     put_HighLowSwitchFrequency (
  730.         [in] ULONG          ulSwitchFrequency
  731.         );
  732.  
  733.     HRESULT
  734.     get_HighLowSwitchFrequency (
  735.         [in, out] ULONG *   pulSwitchFrequency
  736.         );
  737. }
  738.  
  739.  
  740. //---------------------------------------------------------------------
  741. // IBDA_AutoDemodulate interface
  742. //---------------------------------------------------------------------
  743. [
  744.     object,
  745.     uuid(DDF15B12-BD25-11d2-9CA0-00C04F7971E0),
  746.     pointer_default(unique)
  747. ]
  748.  
  749. interface IBDA_AutoDemodulate : IUnknown
  750. {
  751.     HRESULT
  752.     put_AutoDemodulate (
  753.         void
  754.         );
  755. }
  756.  
  757. //---------------------------------------------------------------------
  758. // IBDA_DigitalDemodulator interface
  759. //---------------------------------------------------------------------
  760. [
  761.     object,
  762.     uuid(EF30F379-985B-4d10-B640-A79D5E04E1E0),
  763.     pointer_default(unique)
  764. ]
  765.  
  766. interface IBDA_DigitalDemodulator : IUnknown
  767. {
  768.     HRESULT
  769.     put_ModulationType (
  770.         [in] ModulationType *   pModulationType
  771.         );
  772.  
  773.     HRESULT
  774.     get_ModulationType (
  775.         [in, out] ModulationType *  pModulationType
  776.         );
  777.  
  778.     HRESULT
  779.     put_InnerFECMethod (
  780.         [in] FECMethod *    pFECMethod
  781.         );
  782.  
  783.     HRESULT
  784.     get_InnerFECMethod (
  785.         [in, out] FECMethod *   pFECMethod
  786.         );
  787.  
  788.     HRESULT
  789.     put_InnerFECRate (
  790.         [in] BinaryConvolutionCodeRate *    pFECRate
  791.         );
  792.  
  793.     HRESULT
  794.     get_InnerFECRate (
  795.         [in, out] BinaryConvolutionCodeRate *   pFECRate
  796.         );
  797.  
  798.     HRESULT
  799.     put_OuterFECMethod (
  800.         [in] FECMethod *    pFECMethod
  801.         );
  802.  
  803.     HRESULT
  804.     get_OuterFECMethod (
  805.         [in, out] FECMethod *   pFECMethod
  806.         );
  807.  
  808.     HRESULT
  809.     put_OuterFECRate (
  810.         [in] BinaryConvolutionCodeRate *    pFECRate
  811.         );
  812.  
  813.     HRESULT
  814.     get_OuterFECRate (
  815.         [in, out] BinaryConvolutionCodeRate *   pFECRate
  816.         );
  817.  
  818.     HRESULT
  819.     put_SymbolRate (
  820.         [in] ULONG *    pSymbolRate
  821.         );
  822.  
  823.     HRESULT
  824.     get_SymbolRate (
  825.         [in, out] ULONG *   pSymbolRate
  826.         );
  827.  
  828.     HRESULT
  829.     put_SpectralInversion (
  830.         [in] SpectralInversion *    pSpectralInversion
  831.         );
  832.  
  833.     HRESULT
  834.     get_SpectralInversion (
  835.         [in, out] SpectralInversion *   pSpectralInversion
  836.         );
  837. }
  838.  
  839. typedef enum
  840. {
  841.     KSPROPERTY_IPSINK_MULTICASTLIST,
  842.     KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION,
  843.     KSPROPERTY_IPSINK_ADAPTER_ADDRESS
  844.  
  845. } KSPROPERTY_IPSINK;
  846.  
  847.  
  848.  
  849. //---------------------------------------------------------------------
  850. // IBDA_IPSinkControl interface  (mutlimedia\filters.ks\ipsink)
  851. // IBDA_IPSinkInfo    interface
  852. //
  853. //  IBDA_IPSinkControl is no longer being supported for Ring3 clients.
  854. //  Use the BDA_IPSinkInfo interface instead.
  855. //---------------------------------------------------------------------
  856.  
  857. [
  858.     object,
  859.     uuid(3F4DC8E2-4050-11d3-8F4B-00C04F7971E2),
  860.     pointer_default(unique),
  861.     helpstring("Not supported - Use IBDA_IPSinkInfo instead")
  862. ]
  863. interface IBDA_IPSinkControl : IUnknown
  864. {
  865.     HRESULT GetMulticastList (
  866.                 [in, out] unsigned long *pulcbSize,
  867.                 [in, out] BYTE **pbBuffer
  868.     );
  869.  
  870.  
  871.     HRESULT GetAdapterIPAddress (
  872.                 [in,out] unsigned long *pulcbSize,
  873.                 [in,out] BYTE **pbBuffer
  874.     );
  875.  
  876. }
  877.  
  878. [
  879.     object,
  880.     uuid(A750108F-492E-4d51-95F7-649B23FF7AD7),
  881.     pointer_default(unique)
  882. ]
  883. interface IBDA_IPSinkInfo : IUnknown
  884. {
  885.     HRESULT get_MulticastList (                                             // returns  N 6-byte 802.3 IP addreses.
  886.                 [in, out] ULONG *                       pulcbAddresses,     // 6*N
  887.                 [out, size_is(*pulcbAddresses)] BYTE    **ppbAddressList    // Allocated by caller, must deallocate in callee with CoTaskMemFree()
  888.     );
  889.  
  890.     HRESULT get_AdapterIPAddress (
  891.                 [out] BSTR *pbstrBuffer
  892.     );
  893.  
  894.     HRESULT get_AdapterDescription (
  895.                 [out] BSTR *pbstrBuffer
  896.     );
  897. }
  898. //
  899. //  mpeg-2 demultiplexer-specific interfaces follow
  900. //
  901.  
  902. //---------------------------------------------------------------------
  903. // IEnumPIDMap interface
  904. //---------------------------------------------------------------------
  905.  
  906. #ifdef REMOVE_THESE
  907. typedef enum {
  908.     MEDIA_TRANSPORT_PACKET,         //  complete TS packet e.g. pass-through mode
  909.     MEDIA_ELEMENTARY_STREAM,        //  PES payloads; audio/video only
  910.     MEDIA_MPEG2_PSI,                //  PAT, PMT, CAT, Private
  911.     MEDIA_TRANSPORT_PAYLOAD         //  gathered TS packet payloads (PES packets, etc...)
  912. } MEDIA_SAMPLE_CONTENT ;
  913.  
  914. typedef struct {
  915.     ULONG                   ulPID ;
  916.     MEDIA_SAMPLE_CONTENT    MediaSampleContent ;
  917. } PID_MAP ;
  918. #endif // REMOVE_THESE
  919.  
  920. [
  921.     object,
  922.     uuid (afb6c2a2-2c41-11d3-8a60-0000f81e0e4a),
  923.     pointer_default(unique)
  924. ]
  925. interface IEnumPIDMap : IUnknown
  926. {
  927.     HRESULT
  928.     Next (
  929.         [in]                            ULONG       cRequest,
  930.         [in, out, size_is (cRequest)]   PID_MAP *   pPIDMap,
  931.         [out]                           ULONG *     pcReceived
  932.         ) ;
  933.  
  934.     HRESULT
  935.     Skip (
  936.         [in]    ULONG   cRecords
  937.         ) ;
  938.  
  939.     HRESULT
  940.     Reset (
  941.         ) ;
  942.  
  943.     HRESULT
  944.     Clone (
  945.         [out]   IEnumPIDMap **  ppIEnumPIDMap
  946.         ) ;
  947. } ;
  948.  
  949. //---------------------------------------------------------------------
  950. // IMPEG2PIDMap interface
  951. //---------------------------------------------------------------------
  952.  
  953. [
  954.     object,
  955.     uuid (afb6c2a1-2c41-11d3-8a60-0000f81e0e4a),
  956.     pointer_default(unique)
  957. ]
  958. interface IMPEG2PIDMap : IUnknown
  959. {
  960.     HRESULT
  961.     MapPID (
  962.         [in]    ULONG                   culPID,
  963.         [in]    ULONG *                 pulPID,
  964.         [in]    MEDIA_SAMPLE_CONTENT    MediaSampleContent
  965.         ) ;
  966.  
  967.     HRESULT
  968.     UnmapPID (
  969.         [in]    ULONG   culPID,
  970.         [in]    ULONG * pulPID
  971.         ) ;
  972.  
  973.     HRESULT
  974.     EnumPIDMap (
  975.         [out]   IEnumPIDMap ** pIEnumPIDMap
  976.         ) ;
  977. } ;
  978.  
  979.  
  980.  
  981. /////////////////////////////////////////////////////////////////////////////
  982. //
  983. //  Windows XP vs. DirectX 8.0 header merge
  984. //
  985. //  The following is the original contents of this header from
  986. //  the DirectX 8.0 SDK.
  987. //
  988. /////////////////////////////////////////////////////////////////////////////
  989.  
  990. #else     // DirectX 8.0 content
  991.  
  992.  
  993.     //---------------------------------------------------------------------
  994.     //
  995.     //  IBDA_NetworkProvider interface
  996.     //
  997.     //  Implemented by a BDA Network Provider
  998.     //
  999.     //      Used by a BDA device filter to register itself with
  1000.     //      a Network Provider and query information about the
  1001.     //      the current tuning request.
  1002.     //
  1003.     //---------------------------------------------------------------------
  1004.     [
  1005.         object,
  1006.         uuid(fd501041-8ebe-11ce-8183-00aa00577da2),
  1007.         pointer_default(unique)
  1008.     ]
  1009.  
  1010.     interface IBDA_NetworkProvider : IUnknown
  1011.     {
  1012.  
  1013.         HRESULT
  1014.         PutSignalSource (
  1015.             [in] ULONG          ulSignalSource
  1016.             );
  1017.  
  1018.  
  1019.         HRESULT
  1020.         GetSignalSource (
  1021.             [in, out] ULONG *   pulSignalSource
  1022.             );
  1023.  
  1024.         HRESULT
  1025.         GetNetworkType (
  1026.             [in, out] GUID *    pguidNetworkType
  1027.             );
  1028.  
  1029.         HRESULT
  1030.         PutTuningSpace (
  1031.             [in] REFGUID        guidTuningSpace
  1032.             );
  1033.  
  1034.         HRESULT
  1035.         GetTuningSpace (
  1036.             [in, out] GUID *    pguidTuingSpace
  1037.             );
  1038.  
  1039.         HRESULT
  1040.         RegisterDeviceFilter (
  1041.             [in]  IUnknown *    pUnkFilterControl,
  1042.             [in, out] ULONG *   ppvRegisitrationContext
  1043.             );
  1044.  
  1045.         HRESULT
  1046.         UnRegisterDeviceFilter (
  1047.             [in] ULONG          pvRegistrationContext
  1048.             );
  1049.  
  1050.     }
  1051.  
  1052.  
  1053.     //---------------------------------------------------------------------
  1054.     //
  1055.     //  IBDA_EthernetFilter interface
  1056.     //
  1057.     //  Implemented by a BDA Network Provider
  1058.     //
  1059.     //      Used by an Ethernet Network Data Sink filter (eg. IPSink) to
  1060.     //      request that the Network Provider make its best effort to tune
  1061.     //      to the stream(s) on which a list of Ethernet multicast addresses
  1062.     //      may be transmitted.
  1063.     //
  1064.     //      Addresses in the address list are byte aligned in Network order.
  1065.     //      UlcbAddresses will always be an integer multiple of the
  1066.     //      size of an ethernet address.
  1067.     //
  1068.     //---------------------------------------------------------------------
  1069.     [
  1070.         object,
  1071.         uuid(71985F43-1CA1-11d3-9CC8-00C04F7971E0),
  1072.         pointer_default(unique)
  1073.     ]
  1074.  
  1075.     interface IBDA_EthernetFilter : IUnknown
  1076.     {
  1077.         HRESULT
  1078.         GetMulticastListSize (
  1079.             [in, out] ULONG *                   pulcbAddresses
  1080.             );
  1081.  
  1082.         HRESULT
  1083.         PutMulticastList (
  1084.             [in] ULONG                          ulcbAddresses,
  1085.             [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  1086.             );
  1087.  
  1088.         HRESULT
  1089.         GetMulticastList (
  1090.             [in, out] ULONG *                       pulcbAddresses,
  1091.             [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  1092.             );
  1093.  
  1094.         HRESULT
  1095.         PutMulticastMode (
  1096.             [in] ULONG      ulModeMask
  1097.             );
  1098.  
  1099.         HRESULT
  1100.         GetMulticastMode (
  1101.             [out] ULONG *   pulModeMask
  1102.             );
  1103.  
  1104.     }
  1105.  
  1106.  
  1107.  
  1108.     //---------------------------------------------------------------------
  1109.     //
  1110.     //  IBDA_IPV4Filter interface
  1111.     //
  1112.     //  Implemented by a BDA Network Provider
  1113.     //
  1114.     //      Used by an IPv4 Network Data Sink filter to request
  1115.     //      that the Network Provider make its best effort to tune
  1116.     //      to the stream(s) on which a list of IPv4 multicast addresses
  1117.     //      may be transmitted.
  1118.     //
  1119.     //      Addresses in the address list are byte aligned in Network order.
  1120.     //      UlcbAddresses will always be an integer multiple of the
  1121.     //      size of an IPv4 address.
  1122.     //
  1123.     //---------------------------------------------------------------------
  1124.     [
  1125.         object,
  1126.         uuid(71985F44-1CA1-11d3-9CC8-00C04F7971E0),
  1127.         pointer_default(unique)
  1128.     ]
  1129.  
  1130.     interface IBDA_IPV4Filter : IUnknown
  1131.     {
  1132.  
  1133.         HRESULT
  1134.         GetMulticastListSize (
  1135.             [in, out] ULONG *                   pulcbAddresses
  1136.             );
  1137.  
  1138.         HRESULT
  1139.         PutMulticastList (
  1140.             [in] ULONG                          ulcbAddresses,
  1141.             [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  1142.             );
  1143.  
  1144.         HRESULT
  1145.         GetMulticastList (
  1146.             [in, out] ULONG *                       pulcbAddresses,
  1147.             [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  1148.             );
  1149.  
  1150.         HRESULT
  1151.         PutMulticastMode (
  1152.             [in] ULONG  ulModeMask
  1153.             );
  1154.  
  1155.         HRESULT
  1156.         GetMulticastMode (
  1157.             [out] ULONG* pulModeMask
  1158.             );
  1159.     }
  1160.  
  1161.  
  1162.  
  1163.     //---------------------------------------------------------------------
  1164.     //
  1165.     //  IBDA_IPV6Filter interface
  1166.     //
  1167.     //  Implemented by a BDA Network Provider
  1168.     //
  1169.     //      Used by an IPv6 Network Data Sink filter to request
  1170.     //      that the Network Provider make its best effort to tune
  1171.     //      to the stream(s) on which a list of IPv6 multicast addresses
  1172.     //      may be transmitted.
  1173.     //
  1174.     //      Addresses in the address list are byte aligned in Network order.
  1175.     //      UlcbAddresses will always be an integer multiple of the
  1176.     //      size of an IPv6 address.
  1177.     //
  1178.     //---------------------------------------------------------------------
  1179.     [
  1180.         object,
  1181.         uuid(E1785A74-2A23-4fb3-9245-A8F88017EF33),
  1182.         pointer_default(unique)
  1183.     ]
  1184.  
  1185.     interface IBDA_IPV6Filter : IUnknown
  1186.     {
  1187.  
  1188.         HRESULT
  1189.         GetMulticastListSize (
  1190.             [in, out] ULONG *                   pulcbAddresses
  1191.             );
  1192.  
  1193.         HRESULT
  1194.         PutMulticastList (
  1195.             [in] ULONG                          ulcbAddresses,
  1196.             [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  1197.             );
  1198.  
  1199.         HRESULT
  1200.         GetMulticastList (
  1201.             [in, out] ULONG *                       pulcbAddresses,
  1202.             [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  1203.             );
  1204.  
  1205.         HRESULT
  1206.         PutMulticastMode (
  1207.             [in] ULONG  ulModeMask
  1208.             );
  1209.  
  1210.         HRESULT
  1211.         GetMulticastMode (
  1212.             [out] ULONG* pulModeMask
  1213.             );
  1214.     }
  1215.  
  1216.  
  1217.  
  1218.     //---------------------------------------------------------------------
  1219.     //
  1220.     //  IBDA_DeviceControl interface
  1221.     //
  1222.     //  Implemented by a BDA Device Filter
  1223.     //
  1224.     //      Used by the Network Provider to commit a series of changes
  1225.     //      on a BDA device filter.  The device filter validates and
  1226.     //      accumulates all changes requested after StartChanges().  It
  1227.     //      effects the accumulated list of changes when CommitChanges() is
  1228.     //      called.
  1229.     //
  1230.     //---------------------------------------------------------------------
  1231.     [
  1232.         object,
  1233.         uuid(FD0A5AF3-B41D-11d2-9C95-00C04F7971E0),
  1234.         pointer_default(unique)
  1235.     ]
  1236.  
  1237.     interface IBDA_DeviceControl : IUnknown
  1238.     {
  1239.         HRESULT
  1240.         StartChanges (
  1241.             void
  1242.             );
  1243.  
  1244.         HRESULT
  1245.         CheckChanges (
  1246.             void
  1247.             );
  1248.  
  1249.         HRESULT
  1250.         CommitChanges (
  1251.             void
  1252.             );
  1253.  
  1254.         HRESULT
  1255.         GetChangeState (
  1256.             [in, out] ULONG *   pState
  1257.             );
  1258.  
  1259.     }
  1260.  
  1261.  
  1262.  
  1263.     //---------------------------------------------------------------------
  1264.     //
  1265.     //  IBDA_PinControl interface
  1266.     //
  1267.     //  Implemented by a BDA Device Filter's Pin
  1268.     //
  1269.     //      Used by the Network Provider to determine the BDA PinID and
  1270.     //      PinType on a BDA Filter's Pin
  1271.     //
  1272.     //---------------------------------------------------------------------
  1273.     [
  1274.         object,
  1275.         uuid(0DED49D5-A8B7-4d5d-97A1-12B0C195874D),
  1276.         pointer_default(unique)
  1277.     ]
  1278.  
  1279.     interface IBDA_PinControl : IUnknown
  1280.     {
  1281.         HRESULT
  1282.         GetPinID (
  1283.             [in, out] ULONG *   pulPinID
  1284.             );
  1285.  
  1286.         HRESULT
  1287.         GetPinType (
  1288.             [in, out] ULONG *   pulPinType
  1289.             );
  1290.     }
  1291.  
  1292.     //---------------------------------------------------------------------
  1293.     //
  1294.     //  IBDA_SignalProperties interface
  1295.     //
  1296.     //  Implemented by a BDA Device Filter
  1297.     //
  1298.     //      BDA Signal Properties is used by a Network Provider to inform
  1299.     //      a BDA Device Filter about the current tuning request.  The
  1300.     //      Network Provider will call the Put functions when the BDA
  1301.     //      device is first registered with the Network Provider and whenever
  1302.     //      the current tuning request is modified.
  1303.     //
  1304.     //---------------------------------------------------------------------
  1305.     [
  1306.         object,
  1307.         uuid(D2F1644B-B409-11d2-BC69-00A0C9EE9E16),
  1308.         pointer_default(unique)
  1309.     ]
  1310.  
  1311.     interface IBDA_SignalProperties : IUnknown
  1312.     {
  1313.         HRESULT
  1314.         PutNetworkType (
  1315.             [in] REFGUID        guidNetworkType
  1316.             );
  1317.  
  1318.         HRESULT
  1319.         GetNetworkType (
  1320.             [in, out] GUID *    pguidNetworkType
  1321.             );
  1322.  
  1323.         HRESULT
  1324.         PutSignalSource (
  1325.             [in] ULONG          ulSignalSource
  1326.             );
  1327.  
  1328.         HRESULT
  1329.         GetSignalSource (
  1330.             [in, out] ULONG *   pulSignalSource
  1331.             );
  1332.  
  1333.         HRESULT
  1334.         PutTuningSpace (
  1335.             [in] REFGUID        guidTuningSpace
  1336.             );
  1337.  
  1338.         HRESULT
  1339.         GetTuningSpace (
  1340.             [in, out] GUID *    pguidTuingSpace
  1341.             );
  1342.     }
  1343.  
  1344.  
  1345.     //---------------------------------------------------------------------
  1346.     //
  1347.     //  IBDA_Topology interface
  1348.     //
  1349.     //  Implemented by a BDA Device Filter
  1350.     //
  1351.     //      Used by the Network Provider to query a BDA Device Filter's
  1352.     //      possible topologies (template topology) and to configure
  1353.     //      the device with an appropriate topology for the current
  1354.     //      tuning request.  It is also used to get an IUnknown to
  1355.     //      a control node which may be used to set specific tuning
  1356.     //      information.
  1357.     //
  1358.     //---------------------------------------------------------------------
  1359.     [
  1360.         object,
  1361.         uuid(A14EE835-0A23-11d3-9CC7-00C04F7971E0),
  1362.         pointer_default(unique)
  1363.     ]
  1364.  
  1365.     interface IBDA_Topology : IUnknown
  1366.     {
  1367.         HRESULT
  1368.         GetNodeTypes (
  1369.             [in, out] ULONG *                           pulcNodeTypes,
  1370.             [in]  ULONG                                 ulcNodeTypesMax,
  1371.             [in, out, size_is (ulcNodeTypesMax)] ULONG  rgulNodeTypes[]
  1372.             );
  1373.  
  1374.  
  1375.         HRESULT
  1376.         GetNodeInterfaces (
  1377.             [in]  ULONG                                     ulNodeType,
  1378.             [in, out] ULONG *                               pulcInterfaces,
  1379.             [in]  ULONG                                     ulcInterfacesMax,
  1380.             [in, out, size_is (ulcInterfacesMax)] GUID *    rgguidInterfaces[]
  1381.             );
  1382.  
  1383.         HRESULT
  1384.         GetPinTypes (
  1385.             [in, out] ULONG *                           pulcPinTypes,
  1386.             [in]  ULONG                                 ulcPinTypesMax,
  1387.             [in, out, size_is (ulcPinTypesMax)] ULONG   rgulPinTypes[]
  1388.             );
  1389.  
  1390.         HRESULT
  1391.         GetTemplateConnections (
  1392.             [in, out] ULONG *                       pulcConnections,
  1393.             [in]  ULONG                             ulcConnectionsMax,
  1394.             [in, out, size_is (ulcConnectionsMax)] BDA_TEMPLATE_CONNECTION    rgConnections[]
  1395.             );
  1396.  
  1397.         HRESULT
  1398.         CreatePin (
  1399.             [in]  ULONG         ulPinType,
  1400.             [in, out] ULONG *   pulPinId
  1401.             );
  1402.  
  1403.         HRESULT
  1404.         DeletePin (
  1405.             [in] ULONG      ulPinId
  1406.             );
  1407.  
  1408.         HRESULT
  1409.         SetMediaType (
  1410.             [in]  ULONG             ulPinId,
  1411.             [in]  AM_MEDIA_TYPE *   pMediaType
  1412.             );
  1413.  
  1414.         HRESULT
  1415.         SetMedium (
  1416.             [in] ULONG          ulPinId,
  1417.             [in] REGPINMEDIUM * pMedium
  1418.             );
  1419.  
  1420.         HRESULT
  1421.         CreateTopology (
  1422.             [in] ULONG ulInputPinId,
  1423.             [in] ULONG ulOutputPinId
  1424.             );
  1425.  
  1426.         HRESULT
  1427.         GetControlNode (
  1428.             [in] ULONG              ulInputPinId,
  1429.             [in] ULONG              ulOutputPinId,
  1430.             [in] ULONG              ulNodeType,
  1431.             [in, out] IUnknown **   ppControlNode
  1432.             );
  1433.     }
  1434.  
  1435.     //---------------------------------------------------------------------
  1436.     // IBDA_VoidTransform interface
  1437.     //---------------------------------------------------------------------
  1438.     [
  1439.         object,
  1440.         uuid(71985F46-1CA1-11d3-9CC8-00C04F7971E0),
  1441.         pointer_default(unique)
  1442.     ]
  1443.  
  1444.     interface IBDA_VoidTransform : IUnknown
  1445.     {
  1446.         HRESULT
  1447.         Start (
  1448.             void
  1449.             );
  1450.  
  1451.         HRESULT
  1452.         Stop (
  1453.             void
  1454.             );
  1455.  
  1456.     }
  1457.  
  1458.     //---------------------------------------------------------------------
  1459.     // IBDA_NullTransform interface
  1460.     //---------------------------------------------------------------------
  1461.     [
  1462.         object,
  1463.         uuid(DDF15B0D-BD25-11d2-9CA0-00C04F7971E0),
  1464.         pointer_default(unique)
  1465.     ]
  1466.  
  1467.     interface IBDA_NullTransform : IUnknown
  1468.     {
  1469.         HRESULT
  1470.         Start (
  1471.             void
  1472.             );
  1473.  
  1474.         HRESULT
  1475.         Stop (
  1476.             void
  1477.             );
  1478.  
  1479.     }
  1480.  
  1481.     //---------------------------------------------------------------------
  1482.     // IBDA_FrequencyFilter interface
  1483.     //---------------------------------------------------------------------
  1484.     [
  1485.         object,
  1486.         uuid(71985F47-1CA1-11d3-9CC8-00C04F7971E0),
  1487.         pointer_default(unique)
  1488.     ]
  1489.  
  1490.     interface IBDA_FrequencyFilter : IUnknown
  1491.     {
  1492.         HRESULT
  1493.         put_Autotune (
  1494.             [in] ULONG *        pulTransponder
  1495.             );
  1496.  
  1497.         HRESULT
  1498.         put_Frequency (
  1499.             [in] ULONG *        pulFrequency
  1500.             );
  1501.  
  1502.         HRESULT
  1503.         get_Frequency (
  1504.             [in, out] ULONG *   pulFrequency
  1505.             );
  1506.  
  1507.         HRESULT
  1508.         put_Polarity (
  1509.             [in] ULONG *        pulPolarity
  1510.             );
  1511.  
  1512.         HRESULT
  1513.         get_Polarity (
  1514.             [in, out] ULONG *   pulPolarity
  1515.             );
  1516.  
  1517.         HRESULT
  1518.         put_Range (
  1519.             [in] ULONG *        pulRange
  1520.             );
  1521.  
  1522.         HRESULT
  1523.         get_Range (
  1524.             [in, out] ULONG *   pulRange
  1525.             );
  1526.     }
  1527.  
  1528.     //---------------------------------------------------------------------
  1529.     // IBDA_AutoDemodulate interface
  1530.     //---------------------------------------------------------------------
  1531.     [
  1532.         object,
  1533.         uuid(DDF15B12-BD25-11d2-9CA0-00C04F7971E0),
  1534.         pointer_default(unique)
  1535.     ]
  1536.  
  1537.     interface IBDA_AutoDemodulate : IUnknown
  1538.     {
  1539.         HRESULT
  1540.         put_AutoDemodulate (
  1541.             void
  1542.             );
  1543.     }
  1544.  
  1545.     //---------------------------------------------------------------------
  1546.     // IBDA_DigitalDemodulator interface
  1547.     //---------------------------------------------------------------------
  1548.     [
  1549.         object,
  1550.         uuid(EF30F379-985B-4d10-B640-A79D5E04E1E0),
  1551.         pointer_default(unique)
  1552.     ]
  1553.  
  1554.     interface IBDA_DigitalDemodulator : IUnknown
  1555.     {
  1556.         HRESULT
  1557.         put_ModulationType (
  1558.             [in] ModulationType *   pModulationType
  1559.             );
  1560.  
  1561.         HRESULT
  1562.         get_ModulationType (
  1563.             [in, out] ModulationType *  pModulationType
  1564.             );
  1565.  
  1566.         HRESULT
  1567.         put_InnerFECMethod (
  1568.             [in] FECMethod *    pFECMethod
  1569.             );
  1570.  
  1571.         HRESULT
  1572.         get_InnerFECMethod (
  1573.             [in, out] FECMethod *   pFECMethod
  1574.             );
  1575.  
  1576.         HRESULT
  1577.         put_InnerFECRate (
  1578.             [in] BinaryConvolutionCodeRate *    pFECRate
  1579.             );
  1580.  
  1581.         HRESULT
  1582.         get_InnerFECRate (
  1583.             [in, out] BinaryConvolutionCodeRate *   pFECRate
  1584.             );
  1585.  
  1586.         HRESULT
  1587.         put_OuterFECMethod (
  1588.             [in] FECMethod *    pFECMethod
  1589.             );
  1590.  
  1591.         HRESULT
  1592.         get_OuterFECMethod (
  1593.             [in, out] FECMethod *   pFECMethod
  1594.             );
  1595.  
  1596.         HRESULT
  1597.         put_OuterFECRate (
  1598.             [in] BinaryConvolutionCodeRate *    pFECRate
  1599.             );
  1600.  
  1601.         HRESULT
  1602.         get_OuterFECRate (
  1603.             [in, out] BinaryConvolutionCodeRate *   pFECRate
  1604.             );
  1605.  
  1606.         HRESULT
  1607.         put_SymbolRate (
  1608.             [in] ULONG *    pSymbolRate
  1609.             );
  1610.  
  1611.         HRESULT
  1612.         get_SymbolRate (
  1613.             [in, out] ULONG *   pSymbolRate
  1614.             );
  1615.  
  1616.         HRESULT
  1617.         put_SpectralInversion (
  1618.             [in] SpectralInversion *    pSpectralInversion
  1619.             );
  1620.  
  1621.         HRESULT
  1622.         get_SpectralInversion (
  1623.             [in, out] SpectralInversion *   pSpectralInversion
  1624.             );
  1625.     }
  1626.  
  1627.     typedef enum
  1628.     {
  1629.         KSPROPERTY_IPSINK_MULTICASTLIST,
  1630.         KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION,
  1631.         KSPROPERTY_IPSINK_ADAPTER_ADDRESS
  1632.  
  1633.     } KSPROPERTY_IPSINK;
  1634.  
  1635.  
  1636.  
  1637.     //---------------------------------------------------------------------
  1638.     // IBDA_IPSinkControl interface
  1639.     //---------------------------------------------------------------------
  1640.  
  1641.     [
  1642.         object,
  1643.         uuid(3F4DC8E2-4050-11d3-8F4B-00C04F7971E2),
  1644.         pointer_default(unique)
  1645.     ]
  1646.  
  1647.     interface IBDA_IPSinkControl : IUnknown
  1648.     {
  1649.         HRESULT GetMulticastList (
  1650.                     [in, out] unsigned long *pulcbSize,
  1651.                     [in, out] BYTE **pbBuffer
  1652.         );
  1653.  
  1654.  
  1655.         HRESULT GetAdapterIPAddress (
  1656.                     [in,out] unsigned long *pulcbSize,
  1657.                     [in,out] BYTE **pbBuffer
  1658.         );
  1659.  
  1660.     }
  1661.  
  1662.     //
  1663.     //  mpeg-2 demultiplexer-specific interfaces follow
  1664.     //
  1665.  
  1666.     //---------------------------------------------------------------------
  1667.     // IEnumPIDMap interface
  1668.     //---------------------------------------------------------------------
  1669.  
  1670.     #ifdef REMOVE_THESE
  1671.     typedef enum {
  1672.         MEDIA_TRANSPORT_PACKET,         //  complete TS packet e.g. pass-through mode
  1673.         MEDIA_ELEMENTARY_STREAM,        //  PES payloads; audio/video only
  1674.         MEDIA_MPEG2_PSI,                //  PAT, PMT, CAT, Private
  1675.         MEDIA_TRANSPORT_PAYLOAD         //  gathered TS packet payloads (PES packets, etc...)
  1676.     } MEDIA_SAMPLE_CONTENT ;
  1677.  
  1678.     typedef struct {
  1679.         ULONG                   ulPID ;
  1680.         MEDIA_SAMPLE_CONTENT    MediaSampleContent ;
  1681.     } PID_MAP ;
  1682.     #endif // REMOVE_THESE
  1683.  
  1684.     [
  1685.         object,
  1686.         uuid (afb6c2a2-2c41-11d3-8a60-0000f81e0e4a),
  1687.         pointer_default(unique)
  1688.     ]
  1689.     interface IEnumPIDMap : IUnknown
  1690.     {
  1691.         HRESULT
  1692.         Next (
  1693.             [in]                            ULONG       cRequest,
  1694.             [in, out, size_is (cRequest)]   PID_MAP *   pPIDMap,
  1695.             [out]                           ULONG *     pcReceived
  1696.             ) ;
  1697.  
  1698.         HRESULT
  1699.         Skip (
  1700.             [in]    ULONG   cRecords
  1701.             ) ;
  1702.  
  1703.         HRESULT
  1704.         Reset (
  1705.             ) ;
  1706.  
  1707.         HRESULT
  1708.         Clone (
  1709.             [out]   IEnumPIDMap **  ppIEnumPIDMap
  1710.             ) ;
  1711.     } ;
  1712.  
  1713.     //---------------------------------------------------------------------
  1714.     // IMPEG2PIDMap interface
  1715.     //---------------------------------------------------------------------
  1716.  
  1717.     [
  1718.         object,
  1719.         uuid (afb6c2a1-2c41-11d3-8a60-0000f81e0e4a),
  1720.         pointer_default(unique)
  1721.     ]
  1722.     interface IMPEG2PIDMap : IUnknown
  1723.     {
  1724.         HRESULT
  1725.         MapPID (
  1726.             [in]    ULONG                   culPID,
  1727.             [in]    ULONG *                 pulPID,
  1728.             [in]    MEDIA_SAMPLE_CONTENT    MediaSampleContent
  1729.             ) ;
  1730.  
  1731.         HRESULT
  1732.         UnmapPID (
  1733.             [in]    ULONG   culPID,
  1734.             [in]    ULONG * pulPID
  1735.             ) ;
  1736.  
  1737.         HRESULT
  1738.         EnumPIDMap (
  1739.             [out]   IEnumPIDMap ** pIEnumPIDMap
  1740.             ) ;
  1741.     } ;
  1742.  
  1743.  
  1744. #endif    // DirectX 8.0 content